// 路由层

// 拿到user表
const UserModel = require('../model/user')

// 加密
const bcrypt = require('bcryptjs')

module.exports = {
    // 注册
    async signup(ctx, next) {
        if (ctx.method == 'GET') {
            await ctx.render('signup', {
                title: '用户注册'
            })
        } else {
            // 假设这个对象是前端拿到的登录数据
            // const user = {
            //     name: 'Lucky',
            //     email: '746109674@qq.com',
            //     password: 'admin'
            // }
            let { name, email, password } = ctx.request.body;
            // 加盐次数
            var salt = bcrypt.genSaltSync(10);
            // 加密后的密码
            password = bcrypt.hashSync(password, salt);
            // let request = ctx.request.body;
            // console.log(request);

            const user = {
                name,
                email,
                password
            }
            // 让数据库具有这样一张表，创建表，表查找是异步
            const result = await UserModel.create(user)
            ctx.body = result
        }

    },
    // 登录
    async signin(ctx, next) {
        if (ctx.method == 'GET') {
            ctx.session=null
            await ctx.render('signin', {
                title: '登录页面'
            })
        } else {
            const { name, password } = ctx.request.body
            // 查表
            const user = await UserModel.findOne({ name })
            if (user && await bcrypt.compare(password, user.password)) {//表中存在该用户，并且密码正确
                // 会话存储
                ctx.session.user = {
                    _id: user._id,
                    name: user.name,
                    isAdmin: user.isAdmin,
                    amail: user.email
                }
                ctx.flash={
                    success:'登录成功'
                }
                //    路由跳转
                ctx.redirect('/')
            } else {
                ctx.flash={
                    warning:'登录失败'
                }
                ctx.body = '用户名或密码错误'
            }
        }
    },
    // 退出登录
    async signout(ctx,next){
        ctx.session.user=null
        ctx.flash={warning:'退出登录'}
        ctx.redirect('/')
    }
}